package org.duiduo.service.impl;

import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.duiduo.common.PublicClass;
import org.duiduo.result.LogResultClass;
import org.duiduo.result.ResultData;
import org.duiduo.result.ResultStringClass;
import org.duiduo.service.LintongProjectService;
import org.springframework.stereotype.Service;

import java.io.File;

/**
 * @Description 邻通生活业务层代码
 * @Author lengshuangze
 * @Date 2020/11/21 19:53
 * @Version 1.0
 */
@Service
@Log4j2
public class LintongProjectServiceImpl implements LintongProjectService {

    /***
     * 创建邻通生活项目文件夹 - 不传走默认
     * @param version: 版本号
     * @return
     */
    @Override
    public ResultData createFolder(String version) {
        File file = null;
        String newVersion = null;

        if (StringUtils.isNotBlank(version)) {
            log.info("生成邻通生活项目文件不是默认版本号");
            file = new File(
                    PublicClass.FOLDER_CREATE_URL
                            .concat(PublicClass.CONTRARY_SLASH)
                            .concat(version)
            );
            newVersion = version;
        } else { // 不传走默认
            log.info("生成邻通生活项目文件是默认版本号");
            file = new File(
                    PublicClass.FOLDER_CREATE_URL
                            .concat(PublicClass.CONTRARY_SLASH)
                            .concat(PublicClass.VERSION)
            );
            newVersion = PublicClass.VERSION;
        }

        // 文件不存在生成，存在返回false
        Boolean projectFloderCreateFlag = this.fileExists(file);
        if (projectFloderCreateFlag) {
            log.info(LogResultClass.LINGTONG_CREATE_OK);
        } else {
            log.info(LogResultClass.LINGTONG_CREATE_ERROR);
        }

        // 创建版本记录文件夹
        this.versionRecordFolderCreate(file);

        // 项目文件夹
        File projectFolderFile = new File(
                file.getAbsolutePath()
                        .concat(PublicClass.CONTRARY_SLASH)
                        .concat(ResultStringClass.LINGTONG_PROJECT_NAME)
        );

        // 文件不存在生成，存在返回false
        Boolean projectFolderCreateFlag = this.fileExists(projectFolderFile);
        if (!projectFolderCreateFlag) {
            return new ResultData(false, newVersion.concat(ResultStringClass.LINGTONG_PROJECT_ERROR));
        }
        return new ResultData(true, newVersion.concat(ResultStringClass.LINGTONG_FLODER_CREATE_OK));
    }


    /***
     * 文件不存在生成，存在返回false
     * @param file
     */
    private Boolean fileExists(File file) {
        // 如果文件夹不存在
        if (!file.exists()) {
            // 创建文件夹
            file.mkdir();
        } else {
            return false;
        }
        return true;
    }

    /***
     * 版本记录文件夹生成
     * @param file
     */
    private void versionRecordFolderCreate(File file) {
        // 版本记录文件夹
        File versionRecordFolderFile = new File(
                file.getAbsolutePath()
                        .concat(PublicClass.CONTRARY_SLASH)
                        .concat(ResultStringClass.LINGTONG_VERSION_RECORD_NAME)
        );

        // 文件不存在生成，存在返回false
        Boolean versionRecordFolderCreateFlag = this.fileExists(versionRecordFolderFile);
        if (versionRecordFolderCreateFlag) {
            log.info(LogResultClass.LINGTONG_VERSION_RECORD_OK);
        } else {
            log.info(LogResultClass.LINGTONG_VERSION_RECORD_ERROR);
        }
    }

}
